二叉树的js生成
二叉树的概念
二叉树概念及相关操作本文是顺序二叉树及其操作的js实现,非顺序二叉树应该也差不多,这里没有实现
//基本二叉树的实现
function BT(){
this.root=null;
this.Node=function(e){
this.value=e;
this.left=null;
this.right=null;
}
//添加元素
this.insert=function(e){
function recursiveAdd(tem,e){
if(e.value<tem.value){
if(tem.left==null){
tem.left=e;
}else{
tem=tem.left;
return recursiveAdd(tem,e);
}
}else{
if(tem.right==null){
tem.right=e;
}else{
tem=tem.right;
return recursiveAdd(tem,e);
}
}
}
e=new this.Node(e);
if(this.root==null){
this.root=e;
}else{
TEM=this.root;
recursiveAdd(TEM,e);
}
return this.root;
}
//查找元素
this.find=function(e){
function recursiveFind(tem,e){
if(tem.value==e.value){
console.log(tem);
return tem;
}else{
if(e.value<tem.value){
tem=tem.left;
recursiveFind(tem,e)
}else{
if(e.value>tem.value){
tem=tem.right;
recursiveFind(tem,e)
}
}
}
}
e=new this.Node(e);
if(this.root==null){
return;
}else{
TEM=this.root;
recursiveFind(TEM,e);
}
}
//删除元素
this.delete=function(e){
function recursiveDelete(tem,e){
if(e.value<tem.value){
if(tem.left==null){
return;
}else{
if(tem.left.value==e.value){
tem.left=null;
return;
}else{
tem=tem.left;
recursiveDelete(tem,e)
}
}
}else{
if(e.value>tem.value){
if(tem.right==null){
return;
}else{
if(tem.right.value==e.value){
tem.right=null;
return;
}else{
tem=tem.right;
recursiveDelete(tem,e)
}
}
}
}
}
e=new this.Node(e);
if(this.root==e){
this.root=null;
}else{
TEM=this.root;
recursiveDelete(TEM,e);
}
}
}
具体使用方法
var obj = new BT();
console.time('insertTest');
obj.insert(55);
obj.insert(44);
obj.insert(33);
obj.insert(22);
obj.insert(66);
obj.insert(77);
obj.insert(88);
obj.insert(60);
obj.insert(58);
obj.insert(63);
obj.insert(57);
obj.insert(56);
console.timeEnd('insertTest');
console.time('findTest');
obj.find(63);
console.timeEnd('findTest');
console.time('deleteTest');
obj.delete(57);
console.timeEnd('deleteTest');
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。